home *** CD-ROM | disk | FTP | other *** search
- /*===========================================
- DolphMorph(ドルフモーフ)
-
- モーフィング&変形アニメ作成ソフト
-
- モーフィングアルゴリズム: EAST 1994
- インターフェース作成: 松内 良介 1994
- ===========================================*/
- #define MODULE_MAIN
- #if 0
- main.c
- メインモジュール
-
-
- #endif
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <winb.h>
- #include <te.h>
- #include <fntb.h>
- #include <gui.h>
- #include <file_dlg.h>
- #include <egb.h>
- #include <ryosuke.h>
- #include <usrlib.h>
-
- #include "morph.h"
- #include "points.h"
- #include "desktop.h"
- #include "imstore.h"
- #include "guisub.h"
- #include "morphgo.h"
- #include "icon.h"
-
- #include <fmcfrb.h>
-
- char *guiEgbPtr ; /* EGB のワークアドレス */
- char guiSndPtr[16*1024] ; /* SND のワークアドレス */
-
- static void (*pfIdle)(void) = 0;
- static TIM_CALEN pre_time = {-1,0,0,0,0,0,0,0,0};
-
- static void idleFunc(void)
- {
- TIM_CALEN time;
- TIM_rdcalendar(&time);
- time.msec = (time.msec / 50) & 1;
- if (memcmp(&pre_time,&time,sizeof(TIM_CALEN)) != 0)
- {
- static char dateStr[30];
- static char *weekName[] = {"日","月","火","水","木","金","土"};
- sprintf(dateStr, "%4d.%02d.%02d(%s) %02d%1c%02d",
- time.year, time.month, time.day, weekName[time.what_day],
- time.hour, ": "[time.msec], time.minute);
- WINCLIP *pwc;
- WIN_beginUpDateObj(idDesktopClockMsg, &pwc);
- MMI_SendMessage(idDesktopClockMsg, MM_SETMSG, 1, dateStr);
- MMI_SendMessage(idDesktopClockMsg, MM_SHOW, 0);
- WIN_endUpDateObj(pwc);
- pre_time = time;
- }
- if (pfIdle != 0)
- (*pfIdle)();
- }
-
- static int init_module(void)
- {
- EGB_work = guiEgbPtr;
- if (TIFFinitworkGUI() != 0)
- return -1;
- if (init_imstore() != 0)
- return -1;
- if (init_points() != 0)
- return -1;
- if (init_morphgo() != 0)
- return -1;
- if (icon_setup() != 0)
- return -1;
- if (init_movfile() != 0)
- return -1;
- if (RM_init() != 0)
- return -1;
- pfIdle = MMI_GetIdleTaskFunc();
- MMI_SetIdleTaskFunc(idleFunc);
- desktop_checkActivity();
- return 0;
- }
-
- static void close_module(void)
- {
- end_imstore();
- end_points();
- end_morphgo();
- end_movfile();
- RM_end();
- MMI_SetIdleTaskFunc(pfIdle);
- }
-
- void main()
- {
- MMICTRL ctrl;
- extern int APL_init() ;
-
- /* 致命的エラーハンドラの登録 */
- FM_SetVector() ;
-
- /* サウンドの初期化 */
- SND_init(guiSndPtr) ;
-
- /* 初期化処理 */
- ctrl.page0 = 3 ; /* page0側解像度 */
- ctrl.page1 = 10 ; /* page1側解像度 */
- ctrl.writePage = 0 ; /* 書き込みページ */
- ctrl.displayPage = 3 ; /* 表示ページフラグ */
- ctrl.priority = 0 ; /* 表示プライオリティ */
-
- ctrl.mode = 0 ; /* 色数(0:16色 1:256色 2:3万色) */
- ctrl.width = 512 ; /* VRAMの横の長さ(バイト単位) */
- ctrl.size = 0 ; /* メモリ領域の大きさ */
- ctrl.ptr = NULL ; /* メモリ領域のアドレス */
- ctrl.asize = 0 ; /* ユーザ領域の大きさ */
- ctrl.aptr = NULL ; /* ユーザ領域のアドレス */
- ctrl.fr.lupx = 0 ; /* 表示画面枠 */
- ctrl.fr.lupy = 0 ;
- ctrl.fr.rdwx = 639 ;
- ctrl.fr.rdwy = 479 ;
- ctrl.move.lupx = 0 ; /* 部品移動枠 */
- ctrl.move.lupy = 20 ; /* (ダイアログ移動範囲制限(y座標)) */
- ctrl.move.rdwx = 639 ;
- ctrl.move.rdwy = 479 ;
- ctrl.white = 15 ; /* 白の色番号 */
- ctrl.black = 8 ; /* 黒の色番号 */
- ctrl.gray = 4 ; /* 灰色の色番号 */
- ctrl.xor = 14 ; /* 反転色の色番号 */
- if (MMI_Open( &ctrl ) == NOERR)
- {
- /* 初期化に成功すればメインループに入る. */
- if (APL_init() == NOERR)
- {
- FDG_SaveCurDir() ;
- FDG_InitFileDlg() ;
- // extern void FDGdump(void);
- // FDGdump();
- RM_setFileDlgStyle(1);
- MMI_ExecSystem() ;
- FDG_FreeFileDlg();
- FDG_RecovCurDir() ;
- }
- }
-
- /* 終了処理 */
- close_module();
- MMI_Close() ;
- SND_end() ;
-
- /* 致命的エラーハンドラの復帰 */
- FM_ResetVector() ;
- }
-
- static int setMosPtr(int num)
- {
- SetMouse16(num, WHITE, BLACK);
- return NOERR;
- }
-
-
-
-
-
- int APL_init()
- {
- extern MMIINIT initDataZABOUT ;
- extern MMIINIT initDataZALERT ;
- extern MMIINIT initDataZDESKTOP ;
- extern MMIINIT initDataZIMSTORE ;
- extern MMIINIT initDataZPOINTS ;
- extern MMIINIT initDataZMORPHGO ;
- extern MMIINIT initDataZMOVFILE ;
- extern MMIINIT initDataZMOVIE ;
- extern MMIINIT initDataZPOINTS ;
-
- register int ret ;
-
- /* EGB ワークアドレスの取得. */
- guiEgbPtr = MMI_GetEgbPtr() ;
-
- /* 裏画面の設定 */
- EGB_resolution(guiEgbPtr, 1, 10);
- EGB_writePage(guiEgbPtr, 1);
- EGB_displayStart(guiEgbPtr, 2, 2,2); /* 画面拡大 */
- EGB_displayStart(guiEgbPtr, 3, 320,240); /* 表示画面の大きさ */
- EGB_displayPage(guiEgbPtr, 0, 3);
- EGB_writePage(guiEgbPtr, 0);
-
- /* ハイパ型部品の初期化 */
- if ((ret = MMI_initHyper()) < 0)
- return ret ;
- /* ダイアログ型部品の初期化 */
- if ((ret = MMI_initDialogL40()) < 0)
- return ret ;
- /* アラート型部品の初期化 */
- if ((ret = MMI_initAlertL40()) < 0)
- return ret ;
- /* ウインドウ型部品の初期化 */
- if ((ret = MMI_initWindowL40()) < 0)
- return ret ;
- /* メッセージ型部品の初期化 */
- if ((ret = MMI_initMessageL40()) < 0)
- return ret ;
- /* メニュー型部品の初期化 */
- if ((ret = MMI_initMenuL40()) < 0)
- return ret ;
- /* ボタン型部品の初期化 */
- if ((ret = MMI_initButtonL40()) < 0)
- return ret ;
- /* ドロウボタン型部品の初期化 */
- if ((ret = MMI_initDrawButtonL40()) < 0)
- return ret ;
- /* アイコンボタン型部品の初期化 */
- if ((ret = MMI_initIconL40()) < 0)
- return ret ;
- /* トグルアイコン型部品の初期化 */
- if ((ret = MMI_initToggleIconL40()) < 0)
- return ret ;
- /* メニューアイテム型部品の初期化 */
- if ((ret = MMI_initMenuItemL40()) < 0)
- return ret ;
- /* スクロール型部品の初期化 */
- if ((ret = MMI_initScrollBarL40()) < 0)
- return ret ;
- /* テキスト型部品の初期化 */
- if ((ret = MMI_initTextL40()) < 0)
- return ret ;
- /* リストメニュー型部品の初期化 */
- if ((ret = MMI_initListMenuL40()) < 0)
- return ret ;
- /* 数値入力型部品の初期化 */
- if ((ret = MMI_initNumBoxL40()) < 0)
- return ret ;
-
- /* デフォルトビジュアルエフェクトの登録 */
- MMI_SetUpVisualEffect() ;
-
- /* 背景データの初期化 */
- EGB_tmenuPalette2(guiEgbPtr) ;
-
- /* データの登録 */
- if ((ret = MMI_Init(&initDataZABOUT)) < 0)
- return ret ;
-
- if ((ret = MMI_Init(&initDataZALERT)) < 0)
- return ret ;
-
- if ((ret = MMI_Init(&initDataZMORPHGO)) < 0)
- return ret ;
-
- if ((ret = MMI_Init(&initDataZMOVIE)) < 0)
- return ret ;
-
- if ((ret = MMI_Init(&initDataZDESKTOP)) < 0)
- return ret ;
-
- if ((ret = MMI_Init(&initDataZMOVFILE)) < 0)
- return ret ;
-
- if ((ret = MMI_Init(&initDataZIMSTORE)) < 0)
- return ret ;
-
- if ((ret = MMI_Init(&initDataZPOINTS)) < 0)
- return ret ;
-
- /* SIDEWORKメニューを登録する */
- MMI_SetUpSDKMenu( idDesktopMItem_System , 2 ) ;
-
- if ((ret = init_module()) < 0)
- return ret ;
-
- MMI_SendMessage(idPointsWin, MM_ATTACH, 1, idDesktopWinAttachHyper);
- MMI_SendMessage(idImageStoreWin[0], MM_ATTACH, 1, idDesktopWinAttachHyper);
- MMI_SendMessage(idImageStoreWin[1], MM_ATTACH, 1, idDesktopWinAttachHyper);
-
- /* マウスカーソル形状の設定 */
- MMI_SetPtrFunc( setMosPtr );
- MG_mosDisp(2);
- MG_PopPtr(MOSICON_ARROW);
- MG_mosDisp(3);
-
- /* 背景を表示する */
- MMI_SendMessage(MMI_GetBaseObj(), MM_SHOW, 0) ;
-
- return NOERR ;
- }
-